﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Net.Mail;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.ServiceModel;
using System.ServiceModel.Web;
using BS_Gimnasio;
using BS_Gimnasio.Administracion;
using BS_Gimnasio.General;
using BS_Gimnasio.Logistica;
using BS_Gimnasio.RRHH.Credito;
using BS_Gimnasio.RRHH.Planilla;
using BS_Gimnasio.RRHH;
using BS_Gimnasio.Seguridad;
using BS_Gimnasio.Publicidad;
     //iEEE 830
namespace ServiceGimnasio
{
    [ServiceContract()]
    #region TiposClase

    [ServiceKnownType(typeof(cls_Cliente))]
    [ServiceKnownType(typeof(cls_Bitacora))]
    [ServiceKnownType(typeof(cls_Ejercicio))]
    [ServiceKnownType(typeof(cls_Horario_Clase))]
    [ServiceKnownType(typeof(cls_Sala))]
    [ServiceKnownType(typeof(cls_Foros))]
    [ServiceKnownType(typeof(cls_HistorialForo))]
    [ServiceKnownType(typeof(cls_Mensajeria_Sms))]
    [ServiceKnownType(typeof(cls_Eventos))]
    [ServiceKnownType(typeof(cls_Noticias1))]
    [ServiceKnownType(typeof(cls_Tipo_Cliente))]
    [ServiceKnownType(typeof(cls_Tipo_Ejercicio))]
    [ServiceKnownType(typeof(cls_Estado))]
    [ServiceKnownType(typeof(cls_Gimnasio))]
    [ServiceKnownType(typeof(cls_Modulo))]
    [ServiceKnownType(typeof(cls_Servidor_Correo))]
    [ServiceKnownType(typeof(cls_Tipo_Alerta))]
    [ServiceKnownType(typeof(cls_Detalle_Pedidos))]
    [ServiceKnownType(typeof(cls_Detalle_Planilla))]
    [ServiceKnownType(typeof(cls_Inventario_Equipos))]
    [ServiceKnownType(typeof(cls_Pedidos))]
    [ServiceKnownType(typeof(cls_Producto))]
    [ServiceKnownType(typeof(cls_Proveedor))]
    [ServiceKnownType(typeof(cls_Reporte))]
    [ServiceKnownType(typeof(cls_Servicio))]
    [ServiceKnownType(typeof(cls_Tipo_Producto))]
    [ServiceKnownType(typeof(cls_Contro_Alertas))]
    [ServiceKnownType(typeof(cls_Cuentas_Por_Cobrar))]
    [ServiceKnownType(typeof(cls_Credito))]
    [ServiceKnownType(typeof(cls_Detalle_Planilla))]
    [ServiceKnownType(typeof(cls_Planilla))]
    [ServiceKnownType(typeof(cls_Carrera_Profesional))]
    [ServiceKnownType(typeof(cls_Departamento))]
    [ServiceKnownType(typeof(cls_Empleado))]
    [ServiceKnownType(typeof(cls_Marcas))]
    [ServiceKnownType(typeof(cls_Permisos_Roles))]
    [ServiceKnownType(typeof(cls_Rol))]
    [ServiceKnownType(typeof(cls_Solicitud_Vacacion))]
    [ServiceKnownType(typeof(cls_Tipo_Empleado))]
    [ServiceKnownType(typeof(cls_Usuario))]
    [ServiceKnownType(typeof(cls_Respaldos))]
    [ServiceKnownType(typeof(cls_Facturar))]
    [ServiceKnownType(typeof(cls_Facturas_Detalles))]
    [ServiceKnownType(typeof(cls_Campos_Parqueo))]
    [ServiceKnownType(typeof(cls_Carnet))]
    [ServiceKnownType(typeof(cls_Clases_Horarios))]
    [ServiceKnownType(typeof(cls_Entradas_Salidas_Parqueo))]
    [ServiceKnownType(typeof(cls_Matricula))]
    [ServiceKnownType(typeof(cls_Matricula_Linea))]
    [ServiceKnownType(typeof(cls_Reserva_Parqueo))]
    [ServiceKnownType(typeof(cls_Rutinas))]
    [ServiceKnownType(typeof(cls_Solicitud_Verificar_Matricula))]
    [ServiceKnownType(typeof(cls_Entrenador))]
    [ServiceKnownType(typeof(cls_Empresas))]
    [ServiceKnownType(typeof(BS_Gimnasio.Servicios.cls_Plan_Nutricional))]
    [ServiceKnownType(typeof(BS_Gimnasio.Servicios.cls_Paquete))]
    [ServiceKnownType(typeof(BS_Gimnasio.Servicios.cls_Cita))]
    //[ServiceKnownType(typeof(BS_Gimnasio.Servicios.cls_Cita))]
    //[ServiceKnownType(typeof(BS_Gimnasio.Servicios.cls_Cita))]
    #endregion

    public interface IService
    {
        #region Servicios Polimorfismo

        [OperationContract()]
        void InsertarActualizarRegistro(bool tipoOperacion, ref string mensajeError, cls_Base objeto);

        [OperationContract()]
        bool EliminarRegistro(ref string mensajeError, cls_Base objeto);

        [OperationContract()]
        cls_Base TraerObjeto(cls_Base objeto);

        [OperationContract()]
        DataSet Listar(int opcion, cls_Base objeto);

        [OperationContract()]
        void OtrosProcesos(int opcion, ref object resultado, cls_Base objeto);
        
        #endregion

        #region Otros Servicios

        [OperationContract()]
        cls_EnviarSMS EnviarSMS(cls_EnviarSMS objeto);

        [OperationContract()]
        cls_EnviarCorreos EnviarMail(int IdUsuario, ref string mensaje, cls_EnviarCorreos objeto);

        #endregion
    }
}
